package com.items.form.mapper;


import com.items.form.model.Page;
import com.items.form.model.TFormValue;

import java.util.List;

/**
 * tform值映射器
 * 动态表单数据(TFormValue)表数据库访问层
 *
 * @author bai
 * @date 2023/02/08
 * @since 2023-02-07 14:42:29
 */
public interface TFormValueMapper {

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<TFormValue> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<TFormValue> entities);

    /**
     * 批量新增或按主键更新数据（MyBatis原生foreach方法）
     *
     * @param entities List<TFormValue> 实例对象列表
     * @return 影响行数
     * @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常，请自行校验入参
     */
    int insertOrUpdateBatch(@Param("entities") List<TFormValue> entities);

    /**
     * 批处理更新
     *
     * @param list 列表
     * @return 影响行数
     */
    int updateBatch(@Param("list") List<TFormValue> list);


    /**
     * 得到uuid
     *
     * @return long
     */
    long getUUid();

    /**
     * 获取所有行形式
     * 获得表单所有行
     *
     * @param tableName 表名
     * @param list      列表
     * @return {@link List}<{@link TFormValue}>
     */
    List<TFormValue> getFormAllRow(@Param("tableName") String tableName, @Param("list") List<TFormValue> list);

    /**
     * 获得表单单行
     *
     * @param tableName 表名
     * @return {@link List}<{@link TFormValue}>
     */
    List<TFormValue> getFormRow(@Param("tableName") String tableName,
                                @Param("rowId") String rowId);


    /**
     * 德尔行id
     *
     * @param rowId 行id
     * @return {@link Integer}
     */
    Integer delByRowId(@Param("tableName") String tableName,
                       @Param("rowId") String rowId);


}

